package net.ncraft.mc.easyframework.context;

import java.util.List;

public interface ApplicationContext {

    List<Class<?>> getComponents();

    void init();

    void initExplicitBeans();

    void scan(String basePackage);

    void scan(String basePackage, String exclusion);

    void scan(Class<?> baseClass);

    void scan(Class<?> baseClass, String exclusion);

    void addBean(String beanName, Object bean);

    void addBean(Class<?> inter, Object instance);

    void addBean(Object bean);

    void updateBean(Class<?> origin, Object proxy);

    <T> T getBean(Class<T> c);

    void reAutowire();

    Object getBean(String beanName);
}
